package com.cq.hd.product.service;

import com.cq.hd.common.pagination.Page;
import com.cq.hd.product.api.dto.*;
import com.cq.hd.product.api.vo.*;
import com.cq.hd.product.po.TbActivePo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 活动表 服务类
 * </p>
 *
 * @author mYunYu
 * @since 2023-11-23
 */
public interface TbActiveService extends IService<TbActivePo> {

    Boolean checkGoodsStock(ActiveGoodsStockCheckDto activeGoodsStockCheckDto);

    Long releaseActive(ActiveReleaseDto activeReleaseDto);

    Page<AppMyActivePageVo> pageMyActive(AppMyActivePageDto appMyActivePageDto);

    boolean updateActive(ActiveUpdateDto activeUpdateDto);

    AppMyActiveDetailsVo myActiveDetails(Long id);

    boolean deleteActive(Long id, Long userId, Long businessId);

    boolean takeDownActive(Long id, Long userId, Long businessId);

    Page<IndexActivePageVo> pageIndexActive(IndexActivePageDto indexActivePageDto);

    ActiveDetailsVo details(Long id, Long userId, String shareCode);

    List<ActiveRedPacketBilListVo> availableRedPacketList(Long id, Long userId);

    ActiveGoodsUseDetailsVo useDetails(GoodsUseDetailsDto goodsUseDetailsDto);

    Page<AdminActivePageVo> pageAdminActive(AdminActivePageDto adminActivePageDto);

    AdminActivePageVo adminDetails(Long id);

    void adminDelete(Long id);

    List<SearchBusinessActiveVo> listSearchBusinessActive(List<Long> businessIds);

    Integer countByBusinessId(Long businessId);

    Page<BusinessHomeActivePageVo> pageHomeActive(BusinessHomeActivePageDto businessHomeActivePageDto);

    ActivePreShareVo preShareActive(ActivePreShareDto activePreShareDto);

    ActiveShareVo shareActive(ActiveShareDto activeShareDto);

    String generateShortLink(ActiveShortLinkDto activeShortLinkDto);

    List<ActivePageVo> listByDto(ActiveDto activeDto);

    ActiveVo getActiveById(Long id);

    Boolean subActiveStock(ActiveSubStockDto activeSubStockDto);

    Boolean addActiveStock(ActiveAddStockDto activeAddStockDto);

    ActiveSimpleVo getSimpleVoById(Long id);

    Boolean scanActiveJob();

    Integer getCountByDate(String startTime, String endTime);

    Boolean updateActiveState(UpdateActiveStateDto updateActiveStateDto);

    Set<String> listCityName();

}
